﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;

namespace ProcessingLite
{
    /// <summary>
    /// Responsible for actually drawing content on the screen
    /// </summary>
    public interface IDrawer
    {
        #region Methods\\Drawing Commands
        
        /// <summary>
        /// Draws a pixel at column x and row y
        /// </summary>
        /// <param name="x">Column number</param>
        /// <param name="y">Row number</param>
        /// <param name="color">Color of the pixel</param>
        void FillPixel(int x, int y, Color color);

        /// <summary>
        /// Draws a rectangle
        /// </summary>
        /// <param name="x">The x coordinate of the top left corner of the rectangle</param>
        /// <param name="y">The y coordinate of the top left corner of the rectangle</param>
        /// <param name="height">The height in pixels of the rectangle</param>
        /// <param name="width">The width in pixels of the rectangle</param>
        /// <param name="color">The fill color</param>
        void FillRectangle(int x, int y, int height, int width, Color color);

        #endregion

        /// <summary>
        /// Raised when a drawing command is completed
        /// </summary>
        event EventHandler DrawingCompleted;
    }
}
